package veilingDomein;

import veilingService.ServiceProvider;

public class User {

	private String naam;
	private String adres;
	private String Woonplaats;
	private int rechten; // 0 = beheerder, 1 = gebruiker
	private String username;
	private String password;
	private String email;
	private Krediet krediet = null;
	private int userid;

	public User() {

	}

	public User(String nm, String ad, String wp, String un, String pw,
			String em, int rechtenid, int userid) throws Exception {
		setNaam(nm);
		setAdres(ad);
		setWoonplaats(wp);
		setUsername(un);
		setPassword(pw);
		setEmail(em);
		this.rechten = rechtenid;
		this.userid = userid;
	}

	public int aantalVeilingen() {
		int aantal = 0;
		aantal = ServiceProvider.getVeilingService()
				.getAantalVeilingenPerGebruiker(this.userid);
		return aantal;
	}

	public int aantalBiedingen() {
		int aantal = 0;
		aantal = ServiceProvider.getBiedingService()
				.getAantalBiedingenPerGebruiker(this.userid);
		return aantal;
	}

	public int aantalGekochteCredits() {
		int aantal = 0;
		aantal = ServiceProvider.getUserService().getAantalGekochteCredits(
				this.userid);
		return aantal;
	}

	public Krediet getKrediet() {
	
			krediet = ServiceProvider.getUserService().getKrediet(this);
		return krediet;
	}

	public void setKrediet(Krediet krediet) {
		ServiceProvider.getUserService().updateKrediet(krediet, this);
		this.krediet = krediet;
	}

	public String getPassword() {
		return password;
	}

	public String getAdres() {
		return adres;
	}

	public int getId() {
		return userid;
	}

	public void setId(int id) {
		this.userid = id;
	}

	public void setAdres(String adres) {
		this.adres = adres;
	}

	public String getWoonplaats() {
		return Woonplaats;
	}

	public void setWoonplaats(String woonplaats) {
		Woonplaats = woonplaats;
	}

	public int getRechten() {
		return rechten;
	}

	public void setRechten(int rechten) {
		this.rechten = rechten;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {

		// Pattern pattern;
		// final String EMAIL_PATTERN =
		// "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+((\\.com)";
		//

		// Nog geen check voor email!! komt later..
		this.email = email;
	}

	public void setPassword(String password) throws Exception {
		String passwordklein = password.toLowerCase();
		password.equals(passwordklein);

		if (password.length() >= 8 && !password.toLowerCase().equals(password)
				&& !password.toUpperCase().equals(password)
				&& password.matches(".*[0-9].*")
				&& password.trim().equals(password)) {

			this.password = password;
		} else {
			throw new Exception("Password doesn't meet requirements");
		}

	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getNaam() {
		return naam;
	}

	public void setNaam(String naam) {
		this.naam = naam;
	}

	public String getToString() {
		return toString();
	}

	public String toString() {
		String s = "Naam: " + naam + " Username: " + username + " Userid: "
				+ userid;
		return s;

	}

	public boolean equals(Object b) {
		if (b instanceof User) {
			User u = (User) b;
			if (u.getUsername().equals(getUsername())
					&& u.getPassword().equals(getPassword())) {
				return true;
			}
		}
		return false;
	}

}
